﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

namespace Lesson3_封装_成员方法
{
    internal class Program
    {
        class Person
        {
            public void Speak (string str)
            {
                Console.WriteLine("{0}说{1}",name,str);
            }
            public bool IsAdult()
            {
                return age >= 18;
            }
        public string name;
        public int age; 
            //添加朋友的方法
             public void AddFriends(Person p)   //参数，传入新的朋友进行方法的创建
            {
                if(friends == null)
                {
                    friends = new Person[] { p };

                }

                else   //创建一个新的数组来完成扩容操作
                {
                    Person[] newfriends = new Person[friends.Length + 1];
                    //将小的数组放在大的里面，完成搬家操作
                    for(int i = 0; i < friends.Length; i++)
                    {
                        newfriends[i] = friends[i];  //搬家操作完成 
                        //将朋友（p） 放在扩容数组的最后一位
                        newfriends[newfriends.Length - 1] = p;
                        //最后完成换址操作
                        friends = newfriends; 
                    }
                    

                }


            }
            public Person[] friends;   //最后遍历数组的时候，就可以直接把朋友都打印出来
        }
        
        static void Main(string[] args)
        {
            //成员方法，必须实例化对象，再通过对象来使用 相当于该对象执行了某些行为
            Person p = new Person();
            p.name = "唐老师";
            p.Speak("我爱你");
            p.age = 1;
            if(p.IsAdult())
            {
                p.Speak("我要耍朋友 ");    //若不满足条件，则不执行代码
            }
            Person p2 = new Person();
            p2.name = "火山哥";
            p2.age = 16;
            p.AddFriends(p2);
            for(int i = 0;i< p.friends.Length;i++)
            {
                Console.WriteLine(p.friends[i].name);
            }
        }
    }
}
